/*
	klib_system_resources.h

	provides function headers for viewing system resource allocation and usage

	Author: Aidan Goddard 23/10/13
*/
#ifndef KLIB_SYSTEM_RESOURCES_H_INCLUDED
#define KLIB_SYSTEM_RESOURCES_H_INCLUDED

#include"ktypes.h"

uint32_t	__KLIB__RCGetCPUUsage(uint32_t CPU);
uint32_t	__KLIB__RCGetCPUActiveThreads(uint32_t CPU);
uint64_t	__KLIB__RCGetTID();
uint64_t	__KLIB__RCGetPID();
void		__KLIB__RCGetProcs(uint64_t *proc_list, uint64_t *proc_count);
void		__KLIB__RCGetProcDetails(uint64_t PID, uint32_t *state, uint32_t *owner_id);
void 		__KLIB__RCGetProcImageName(uint64_t PID, char *dest_buffer, int *length);

void		__KLIB__RCGetProcDescription(uint64_t PID, char *dest_buffer, uint64_t *length);
void		__KLIB__RCGetThreads(uint64_t PID, uint64_t *thread_list, uint64_t *thread_count);
void		__KLIB__RCGetProcMemory(uint64_t PID, uint64_t *PML4, uint64_t *pages_allocated, uint64_t *kernel_memory_allocated);

// date time stuff
uint32_t	__KLIB__SystemTimeGetYear(void);
uint32_t	__KLIB__SystemTimeGetMonth(void);
uint32_t	__KLIB__SystemTimeGetDay(void);
uint32_t	__KLIB__SystemTimeGetHour(void);
uint32_t	__KLIB__SystemTimeGetMinute(void);
uint32_t	__KLIB__SystemTimeGetSecond(void);
uint32_t	__KLIB__SystemTimeGetMSecond(void);
uint64_t 	__KLIB__SystemTimeGetSecondSincEpoc(void);
uint64_t	__KLIB__SystemTimeGetMSecondSinceEpoc(void);


#endif
